﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _89二维数组顺时针旋转90度
{
    internal class Program
    {
        // private static void Main(string[] args)
        // {
        //     int[,] array =
        //     {
        //         {1,2,3,4},
        //         {0,0,0,7},
        //         {0,0,0,8}
        //     };
        //     ShowArray2(array);
        //     array = Roate90(array);
        //     ShowArray2(array);
        // }

        //private static int[,] Roate90(int[,] array)
        //{
        //    //创建一个新数组
        //    int[,] newArray = new int[array.GetLength(1), array.GetLength(0)];

        //    int c1 = newArray.GetLength(1) - 1;//新数组最大列
        //    for (int r = 0; r < array.GetLength(0); r++)
        //    {
        //        int r1 = 0;//新数组的行从0开始
        //        for (int c = 0; c < array.GetLength(1); c++)
        //        {
        //            newArray[r1, c1] = array[r, c];
        //            r1++;
        //        }
        //        c1--;
        //    }
        //    return newArray;
        //}

        public static void ShowArray2(int[,] array)
        {
            Console.WriteLine("---------------------------------------------");
            for (int r = 0; r < array.GetLength(0); r++)
            {
                for (int c = 0; c < array.GetLength(1); c++)
                {
                    Console.Write(array[r, c] + "\t");
                }
                Console.WriteLine();
            }
        }

        private static void Main(string[] args)
        {
            int[,] array =
            {
                 {1,2,3,4},
                 {0,0,0,7},
                 {0,0,0,8}
             };

            Array2DRotateHelper rotateHelper = new Array2DRotateHelper(array);
            array = rotateHelper.Rotate(2);
            ShowArray2(array);
        }
    }
}